package String.笔试题;

import java.util.Scanner;

public class Test {
// TODO 第一个只出现一次的字符
    public int firstUniqChar(String s) {
        //第一个只出现一次的字符
        //1.申请一个数组 计数数组
        int[] count = new int[25];
        //2.遍历字符串的每个字符, 把字符出现的次数存储在数组里面
        for (int i = 0; i < s.length(); i++) {
            //取出每个字符
           char ch = s.charAt(i);
            //记数数组相应位置++
            count[ch - 'a'] += 1;
        }
        //3.再次遍历字符串的每个字符,如果在数组里面是1,那么就返回当前的数组下标
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if(count[ch - 'a'] == 1) {
                return i;
            }
        }
        return - 1;
    }
//TODO 字符串最后一个单词的长度

    public static void main1(String[] args) {
//        Scanner in = new Scanner(System.in);
//        // 注意 hasNext 和 hasNextLine 的区别
//        //把其他值转换成String类型
//        String s = String.valueOf(in);
//        //再用' ' 进行分割
//        String[] ch = s.split(" ");
//        //获取最后一个单词
//        s = ch[ch.length - 1];
//        int len = 0;
//        len = s.length();
        //获取最后一个空格的位置
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // // 检查是否有下一行
           String s = in.nextLine();// 读取整行
            //获取最后一个空格的位置
           int index = s.lastIndexOf(' ');
            //获取字串
            String str = s.substring(index + 1);
            System.out.println(str.length());
        }
    }
    //TODO  检测字符串是否为回文
    //i遇到非字母数字++,j遇到非字母数字--,直到相遇
    //判断是否在字母数字范围
    public static boolean isNumOrCharacter(char ch) {
        if(ch >= '0' && ch <= '9' || ch >= 'a' && ch <= 'z') {
            return true;
        }
        return false;
    }
    public boolean isPalindrome(String s) {
        //
        s = s.toLowerCase();
        //1.定义i,j直到相遇
        int i = 0;
        int j = s.length() - 1;
        //2.i != j则进入循环
        while (i != j){
            //3.如果遇到非数字和字母就改变下标
            while (i < j && !isNumOrCharacter(s.charAt(i))) {//考虑越界问题
                i++;
            }
            while (i < j && !isNumOrCharacter(s.charAt(j))) {
                j--;
            }
            //4.比较当前i,j下标的值是否相等
            if (s.charAt(i) == s.charAt(j)) {
                i++;
                j--;
            }else {//5.不一样就直接没了
                return false;
            }
        }
        return true;
    }

    //TODO 字符串相加
//    class Solution {
//        public String addStrings(String num1, String num2) {
//
//        }
//    }
    }


